package com.kantboot.system.user.role.service.impl;

import com.kantboot.system.user.role.domain.dto.UserRoleSaveDTO;
import com.kantboot.system.user.role.domain.entity.SysUserRole;
import com.kantboot.system.user.role.domain.entity.SysUserRoleShow;
import com.kantboot.system.user.role.repository.SysUserRoleRepository;
import com.kantboot.system.user.role.repository.SysUserRoleShowRepository;
import com.kantboot.system.user.role.service.ISysUserRoleService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

@Service
public class SysUserRoleServiceImpl implements ISysUserRoleService {

    @Resource
    private SysUserRoleRepository repository;


    @Resource
    private SysUserRoleShowRepository showRepository;

    @Override
    public void saveUserRole(UserRoleSaveDTO dto) {
        for(var userRole : dto.getUserRoles()){
            // 根据用户ID和角色编码删除
            repository.deleteByRoleCodeAndUserId(userRole.getRoleCode(), dto.getUserId());
            showRepository.deleteByRoleCodeAndUserId(userRole.getRoleCode(), dto.getUserId());

            // 保存用户角色
            repository.save(
                    new SysUserRole().setUserId(dto.getUserId())
                            .setRoleCode(userRole.getRoleCode())
                            .setIsVisible(userRole.getIsVisible())
            );

            if(userRole.getIsVisible()) {
                showRepository.save(
                        new SysUserRoleShow().setUserId(dto.getUserId())
                                .setRoleCode(userRole.getRoleCode())
                                .setIsVisible(userRole.getIsVisible()));

            }
        }
    }

    @Override
    public void deleteUserRole(UserRoleSaveDTO dto) {
        for(var userRole : dto.getUserRoles()){
            // 根据用户ID和角色编码删除
            repository.deleteByRoleCodeAndUserId(userRole.getRoleCode(), dto.getUserId());
            showRepository.deleteByRoleCodeAndUserId(userRole.getRoleCode(), dto.getUserId());
        }
    }
}
